package com.wzj.uarmor.controller;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.wzj.uarmor.domain.FileType;
import com.wzj.uarmor.service.IFileTypeService;
import com.wzj.uarmor.utils.ResponseStatus;
import com.wzj.uarmor.utils.ResponseVO;
import com.wzj.uarmor.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 白名单管理（新）
 * @author whong on 2023/3/18
 * @Description
 */
@RestController
@RequestMapping("/fileType")
@RequiredArgsConstructor
public class FileTypeController {

    private final IFileTypeService fileTypeService;

    /**
     * 名单列表
     * @return {@link ResponseVO}
     */
    @GetMapping("/list")
    public ResponseVO list (){
        //调用数据库
        List<FileType> fileTypeList = fileTypeService.list();
        Map<String, List<FileType>> fileTypeMap = fileTypeList.stream().collect(Collectors.groupingBy(FileType::getType));
        return ResultUtil.success("成功",fileTypeMap);
    }

    /**
     * 编辑
     * 名单编辑
     *
     * @param fileTypes 文件类型
     * @return {@link ResponseVO}
     */
    @PostMapping("/edit")
    public  ResponseVO  edit (@RequestBody List<FileType> fileTypes){
        fileTypeService.updateBatchById(fileTypes);
        return  ResultUtil.success(ResponseStatus.SUCCESS);
    }

    /**
     * 添加名单类型
     * @param fileType 文件类型
     * @return {@link ResponseVO}
     */
    @PostMapping("/add")
    public  ResponseVO addFile(@RequestBody FileType fileType){
        //对文件名拆分
        // 判断是属于文件类型
        FileType existOne = fileTypeService.getOne(Wrappers.<FileType>lambdaQuery().eq(FileType::getType, fileType.getType())
                .eq(FileType::getSuffix,fileType.getSuffix()));
        if(existOne != null){
            return ResultUtil.error("已经存在，请不要重复添加!");
        }
        fileTypeService.save(fileType);
        //存储
        return  ResultUtil.success(ResponseStatus.SUCCESS);
    }
    /**
     * 文件上传
     * @param file
     * @return
     */
    @PostMapping("/upLoadFile")
    public ResponseVO  upFile (MultipartFile file){
        String fileName = file.getName();
        //校验
//                获取文件大小
//       if (file.getSize()>DEFAULT_MAX_SIZE){
//
//           throw new IOException("文件不能超过 10M");
//       }
//       if (file.getName().length()>DEFAULT_FILE_NAME_LENGTH){
//           throw new  IOException("文件名称不能超过50字");
//       }
        //获取后缀名
        file.getOriginalFilename();
        //判断名称是否非法

        // 正常
        //判断文件大小
//       if (
//               file.length()*100*200>200
//       ){
//           return  ResultUtil.error(500,"文件大于200M");
//       }
        //正常上传成功
        return  ResultUtil.success(ResponseStatus.SUCCESS);
    }


}
